﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace ServicioWPF.Clases
{
    class Alumno
    {
        #region Propiedades
        private int claveEntidad;
        private string nombre;
        private string apellidoPaterno;
        private string apellidoMaterno;
        private string direccion;
        private string telefono;
        private string correo;
        private string usuarioLogearte;
        private string contrasena;
        private string boleta;
        #endregion

        #region GetersYSeters
        public int ClaveEntidad
        {
            get
            {
                return claveEntidad;
            }
            set
            {
                claveEntidad = value;
            }
        }

        public string Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                nombre = value;
            }
        }

        public string ApellidoMaterno
        {
            get
            {
                return apellidoMaterno;
            }
            set
            {
                apellidoMaterno = value;
            }
        }

        public string ApellidoPaterno
        {
            get
            {
                return apellidoPaterno;
            }
            set
            {
                apellidoPaterno = value;
            }
        }

        public string Direccion
        {
            get
            {
                return direccion;
            }
            set
            {
                direccion = value;
            }
        }

        public string Telefono
        {
            get
            {
                return telefono;
            }
            set
            {
                telefono = value;
            }
        }

        public string Correo
        {
            get
            {
                return correo;
            }
            set
            {
                correo = value;
            }
        }

        public string UsuarioLogearte
        {
            get
            {
                return usuarioLogearte;
            }
            set
            {
                usuarioLogearte = value;
            }
        }

        public string Contrasena
        {
            get
            {
                return contrasena;
            }
            set
            {
                contrasena = value;
            }
        }

        public string Boleta
        {
            get
            {
                return boleta;
            }
            set
            {
                boleta = value;
            }
        }

        #endregion

        #region Metodos
        /// <summary>
        /// Metodo que verifica el login dado por el alumno
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static bool VerificaLogin(Alumno miAlumno)
        {
            bool Validacion = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Alumno where usuario='" + miAlumno.usuarioLogearte + "' and " +
                "contrasena= MD5('" + miAlumno.contrasena + "');", ConexionMySql);
            DataTable dtAlumno = new DataTable();
            daProfesor.Fill(dtAlumno);
            if (dtAlumno.Rows.Count > 0)
            {
                Validacion = true;
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que obtiene la claveEntidad del usuario dado su usuario y pass
        /// </summary>
        /// <param name="MiUsuario"></param>
        /// <returns></returns>
        public static int buscaLaCveEntAlumno(Alumno miAlumno)
        {
            int Validacion = 0;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daProfesor = new MySqlDataAdapter("select * from " +
                "Alumno where usuario='" + miAlumno.usuarioLogearte + "' and " +
                "contrasena= MD5('" + miAlumno.contrasena + "');", ConexionMySql);
            DataTable dtProfesor = new DataTable();
            daProfesor.Fill(dtProfesor);
            if (dtProfesor.Rows.Count > 0)
            {
                Validacion = Convert.ToInt32(dtProfesor.Rows[0].ItemArray[0]);
            }
            return Validacion;
        }

        /// <summary>
        /// Metodo que busca el objeto alumno por su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static Alumno buscaPorCveEntAlumno(int CveEntAlumno)
        {
            Alumno miAlumno = new Alumno();
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daAlumno = new MySqlDataAdapter("select * from " +
                "Alumno where ClaveEntidad='" + CveEntAlumno + "'", ConexionMySql);
            DataTable dtAlumno = new DataTable();
            daAlumno.Fill(dtAlumno);
            miAlumno.claveEntidad = Convert.ToInt32(dtAlumno.Rows[0].ItemArray[0]);
            miAlumno.nombre = dtAlumno.Rows[0].ItemArray[1].ToString();
            miAlumno.apellidoPaterno = dtAlumno.Rows[0].ItemArray[2].ToString();
            miAlumno.apellidoMaterno = dtAlumno.Rows[0].ItemArray[3].ToString();
            return miAlumno;
        }

        /// <summary>
        /// Metodo que busca Todos los usuarios alumno
        /// </summary>
        /// <returns></returns>
        public static DataTable buscarTodosAlumnos()
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daAlumno = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo, Boleta from Alumno;", ConexionMySql);
            DataTable dtAlumno = new DataTable();
            daAlumno.Fill(dtAlumno);
            return dtAlumno;
        }

        /// <summary>
        /// Metodo que obtiene datatable del Alumno dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuario"></param>
        /// <returns></returns>
        public static DataTable dtBuscarPorCveEntAlumno(int CveEntAlumno)
        {
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daAlumno = new MySqlDataAdapter("select ClaveEntidad, Nombre, " +
                "ApellidoPaterno, ApellidoMaterno, Direccion, Telefono, Correo, Boleta from Alumno " +
                "where ClaveEntidad = " + CveEntAlumno + ";", ConexionMySql);
            DataTable dtAlumno = new DataTable();
            daAlumno.Fill(dtAlumno);
            return dtAlumno;
        }

        /// <summary>
        /// metodo que actualiza el registro de un alumno dada su claveEntidad
        /// </summary>
        /// <param name="CveEntUsuaio"></param>
        /// <returns></returns>
        public static bool actualizaAlumno(Alumno miAlumno)
        {
            bool Actualizo = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string Actualiza = "update Alumno set Nombre='" + miAlumno.nombre + "', " +
                                "ApellidoPaterno = '" + miAlumno.apellidoPaterno + "', " +
                                "ApellidoMaterno = '" + miAlumno.apellidoMaterno + "', " +
                                "Direccion = '" + miAlumno.direccion + "', " +
                                "Telefono = '" + miAlumno.telefono + "', " +
                                "Correo = '" + miAlumno.correo + "', " +
                                "Boleta = '" + miAlumno.boleta + "' where ClaveEntidad = " + miAlumno.claveEntidad + ";";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Actualiza, ConexionMySql);
                comando.ExecuteNonQuery();
                Actualizo = true;
                return Actualizo;
            }
            catch
            {
                return Actualizo;
            }
        }

        public static bool insertaNuevoAlumno(Alumno miAlumno)
        {
            bool inserta = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            string Insert = "insert into Alumno(Nombre, ApellidoPaterno, ApellidoMaterno, " +
                            "Usuario, Contrasena, Direccion, Telefono, Correo, TipoUsuario, Boleta) " +
                            "values('" + miAlumno.nombre + "', '" + miAlumno.apellidoPaterno + "', " +
                            "'" + miAlumno.apellidoMaterno + "', '" + miAlumno.usuarioLogearte + "', " +
                            "MD5('" + miAlumno.contrasena + "'), '" + miAlumno.direccion + "', " +
                            "'" + miAlumno.correo + "', '" + miAlumno.telefono + "', 2, " +
                            "'" + miAlumno.Boleta + "');";
            ConexionMySql.Open();
            try
            {
                MySqlCommand comando = new MySqlCommand(Insert, ConexionMySql);
                comando.ExecuteNonQuery();
                inserta = true;
                return inserta;
            }
            catch
            {
                return inserta;
            }
        }

        /// <summary>
        /// metodo que verifica si ya existe un alumno con el mismo nombre de usuario
        /// </summary>
        /// <param name="nombreUsuarioAlumno"></param>
        /// <returns></returns>
        public static bool verificaExisteMismoNombreUsuarioAlumno(string nombreUsuarioAlumno)
        {
            bool existe = false;
            MySqlConnection ConexionMySql = new MySqlConnection();
            ConexionMySql.ConnectionString = Constantes.CadenaConexion();
            MySqlDataAdapter daAlumno = new MySqlDataAdapter("select * from Alumno where usuario= '" + nombreUsuarioAlumno + "';", ConexionMySql);
            DataTable dtAlumno = new DataTable();
            daAlumno.Fill(dtAlumno);
            if (dtAlumno.Rows.Count > 0)
            {
                existe = true;
            }
            return existe;
        }
        #endregion
    }
}
